package com.nowcoder.community.util;

import com.nowcoder.community.entity.User;
import org.springframework.stereotype.Component;

/**
 * @author szq
 * @create 2023-01-20 21:39
 * @description 持有用户信息，用来代替 session 对象
 */
@Component
public class HostHolder {
    /**
     * ThreadLocal, 即线程变量，是一个以 ThreadLocal 对象为键，任意对象为值的存储结构。
     * 这个结构被附带在线程上，也就是说一个线程可以根据一个 ThreadLocal 对象查询到绑定在这个线程上的一个值。
     * 可以通过 set(T) 方法来设置一个值，在当前线程下再通过 get() 方法获取到原先设置的值。
     */
    private ThreadLocal<User> users = new ThreadLocal<>();

    public void setUser(User user){
        users.set(user);
    }

    public User getUser(){
        return users.get();
    }

    public void removeUser(){
        users.remove();
    }
}
